package com.lalosoft.gastostarjetaweb.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.jdo.PersistenceManager;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.appengine.repackaged.org.json.JSONException;
import com.google.appengine.repackaged.org.json.JSONObject;
import com.lalosoft.gastostarjetaweb.Constants;
import com.lalosoft.gastostarjetaweb.dao.UserDao;
import com.lalosoft.gastostarjetaweb.model.User;
import com.lalosoft.gastostarjetaweb.pmf.PMF;

@SuppressWarnings("serial")
public class ActualizarUserServlet extends HttpServlet {
	
	private static final Logger log = Logger.getLogger("ActualizarUserServlet");
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doPost(req, resp);
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		
		String username = req.getParameter("username");
		String password = req.getParameter("password");
		String email = req.getParameter("email");
		String token = req.getParameter("token");
		
		User userFounded =  UserDao.findUserByEmail(email);
		JSONObject jsonObject = new JSONObject();
		try {
			if(userFounded.getUuid().equals(token)){
				
				userFounded = UserDao.findUserByEmail(email);
				userFounded.setEmail(email);
				userFounded.setPassword(password);
				userFounded.setUsername(username);
				PersistenceManager pm = PMF.get().getPersistenceManager();
				try{
					UserDao.updateUser(userFounded, pm);
					jsonObject.put("result", "ok");
				
				} finally {
					pm.close();
				} 
			} else {
				jsonObject.put("result", "error");
				jsonObject.put("cause", "user exist");
			}
		} catch (JSONException e) {
			log.log(Level.WARNING, "Error: " + e.getMessage(), e);
		}
		log.log(Level.WARNING, "JsonEnviado: " + jsonObject.toString());
		resp.setContentType(Constants.CONTENT_TYPE);
		// Get the printwriter object from response to write the required json object to the output stream      
		PrintWriter out = resp.getWriter();
		// Assuming your json object is **jsonObject**, perform the following, it will return your json object  
		out.print(jsonObject);
		out.flush();
	}

}
